﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ComunesMGI.DataTypes
{
    [Serializable]
    public class DataTareaConCampos : DataTarea
    {
        List<DataCampo> _campos;
        public List<DataCampo> Campos
        {
            get { return _campos; }
            set { _campos = value; }
        }

        public DataTareaConCampos(string idTarea, string descripcion, List<DataCampo> campos)
            : base(idTarea, descripcion)
        {
            this._campos = campos;
        }

        public override bool Equals(Object obj)
        {
            DataTareaConCampos tarea = (DataTareaConCampos)obj;
            bool igualesColecciones = true;
            if (tarea.Campos != null && this.Campos != null)
            {
                foreach (DataCampo campo in this.Campos)
                {
                    if (!tarea.Campos.Contains(campo))
                    {
                        igualesColecciones = false;
                        continue;
                    }
                }
                if (igualesColecciones)
                {
                    foreach (DataCampo campo in tarea.Campos)
                    {
                        if (!this.Campos.Contains(campo))
                        {
                            igualesColecciones = false;
                            continue;
                        }
                    }
                }
            }
            else
            {
                if (tarea.Campos == null && this.Campos != null)
                {
                    igualesColecciones = false;
                }
                else if (tarea.Campos != null && this.Campos == null)
                {
                    igualesColecciones = false;
                }
            }
            return ((this.IdTarea == tarea.IdTarea) && (this.Descripcion == tarea.Descripcion) && igualesColecciones);

        }
    }
}
